/*
 * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.pig4cloud.pig.common.security.annotation;

import java.lang.annotation.*;

/**
 * 服务调用不鉴权注解
 * 1、@Inner 都会添加 ignore-url（security.oauth2.client.ignore-urls） 处理，即不许授权访问 {@link com.pig4cloud.pig.common.security.component.PermitAllUrlProperties}
 * 2、Inner.value=true 只能内部调用 {@link {@link com.pig4cloud.pig.common.security.component.PigxSecurityInnerAspect}
 *
 * eg:
 * 1、@Inner/@Inner(true) 无权限限制访问 但只能内部
 * 2、@Inner(false) 无权限限制（内部or外部均可）
 * @author lengleng
 * @date 2020-06-14
 */
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Inner {

	/**
	 * 是否只能内部调用，默认只能内部调用，否则允许外部调用
	 * @return false, true
	 */
	boolean value() default true;

	/**
	 * 需要特殊判空的字段(预留)，value=true生效
	 * ,指定应用id调用，例如@Inner(limitModules="bblocks-auth"),则仅限bblocks-auth发起请求
	 * @return
	 * @return
	 */
	String[] limitModules() default {};

	/**
	 * 需要特殊判空的字段(预留)
	 * @return {}
	 */
	String[] field() default {};

}
